home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / tools / czesc_2 / ispell-3.3ljr / ispell / local.c < prev    next >
C/C++ Source or Header  |  1992-09-22  |  1KB  |  75 lines

  1. /*
  2.  *   handles local words.  simple hack.  no pride.
  3.  *
  4.  *   (Thanks tgr! Not a bad hack. --- LJR)
  5.  */
  6. #include <stdlib.h>
  7. #include <stdio.h>
  8. #include <string.h>
  9. #include "ispell.h"
  10.  
  11. static int localcount = 0;
  12.  
  13. #define MAXLINELEN 70
  14.  
  15. struct wptr
  16. {
  17.   struct wptr *next;
  18.   char word[4];
  19. } *wptr;
  20.  
  21. void lldump (void)
  22. {
  23.   FILE *f;
  24.   char localname[32];
  25.   struct wptr *p, *q;
  26.   int loc;
  27.   int len;
  28.  
  29.   strcpy (localname, "local.words");
  30.   if (localcount)
  31.     sprintf (localname + strlen (localname), "%d", localcount);
  32.   f = fopen (localname, "w");
  33.   if (f != NULL)
  34.     {
  35.       loc = 0;
  36.       for (p = wptr; p;)
  37.     {
  38.       q = p->next;
  39.       len = strlen (p->word) + 1;
  40.       if (len + loc > MAXLINELEN)
  41.         {
  42.           putc ('\n', f);
  43.           loc = 0;
  44.         }
  45.       if (loc == 0)
  46.         {
  47.           fprintf (f, " ispell'local'words");
  48.           loc = 19;
  49.         }
  50.       fputc (' ', f);
  51.       fputs (p->word, f);
  52.       loc += len;
  53.       free (p);
  54.       p = q;
  55.     }
  56.       wptr = NULL;
  57.       fclose (f);
  58.     }
  59.   localcount++;
  60. }
  61.  
  62. void llinsert (char *s)
  63. {
  64.   int len;
  65.   struct wptr *p;
  66.  
  67.   len = 5 + strlen (s);
  68.   if ((p = malloc (len)))
  69.     {
  70.       strcpy (p->word, s);
  71.       p->next = wptr;
  72.       wptr = p;
  73.     }
  74. }
  75.